package vip.xiaonuo.biz.modular.user.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import vip.xiaonuo.biz.modular.user.entity.BizFzUser;
import vip.xiaonuo.biz.modular.user.param.*;

import javax.validation.Valid;
import java.util.List;
import java.util.Map;

/**
 * 分账用户表Service接口
 *
 * @author gtc
 *
 **/
public interface BizFzUserService extends IService<BizFzUser> {

    /**
     * 获取分账用户表分页
     *
     * @author gtc
     *
     */
    Page<BizFzUser> page(BizFzUserPageParam bizFzUserPageParam);

    /**
     * 添加分账用户表
     *
     * @author gtc
     *
     */
    void add(BizFzUserAddParam bizFzUserAddParam);

    /**
     * 编辑分账用户表
     *
     * @author gtc
     *
     */
    void edit(BizFzUserEditParam bizFzUserEditParam);

    /**
     * 删除分账用户表
     *
     * @author gtc
     *
     */
    void delete(List<BizFzUserIdParam> bizFzUserIdParamList);

    /**
     * 获取分账用户表详情
     *
     * @author gtc
     *
     */
    BizFzUser detail(BizFzUserIdParam bizFzUserIdParam);

    /**
     * 获取分账用户表详情
     *
     * @author gtc
     *
     **/
    BizFzUser queryEntity(String id);

    /**
     * 绑定微信小程序openid
     *
     * @param param 绑定参数
     * @return 绑定结果
     */
    boolean bindWxOpenId(BizFzUserWxBindParam param);

    /**
     * 微信小程序登录
     *
     * @param param 登录参数
     * @return 登录结果，包含用户信息和token，若返回null则表示该openid未绑定分销用户
     */
    Map<String, Object> wxLogin(BizFzUserWxLoginParam param);

    /**
     * 注册分销用户
     *
     * @param param 注册参数
     * @return 注册结果，包含用户信息和token
     */
    Map<String, Object> register(BizFzUserRegisterParam param);

    String login(@Valid ClientUserLoginParam loginParam);
}
